package ws;

import java.io.File;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import org.orm.PersistentException;
public class LibroSOA {

	private static final int ROW_COUNT = 100;
	/**
	 * autentificar libro
	 * @param clave String
	 * @return int
	 */
	public String autentificarlibro(String clave){
		String res = "";
		int id =0;
		orm.DAOFactory lDAOFactory = orm.DAOFactory.getDAOFactory();
		try {
			orm.Libro[] ormLibros = lDAOFactory.getLibroDAO().listLibroByQuery("lib_clave='"+clave+"'", null);
			int length = Math.min(ormLibros.length, ROW_COUNT);
			if (length == 1){
				for (int i = 0; i < length; i++) {
					id = ormLibros[i].getLib_id();
				}
			}
		} catch (PersistentException e) {
			// TODO Auto-generated catch block
		}
		res = ""+id;
		return res;

	}

	public String creargrafico(int idLibro,int idPregunta){
		String respuesta ="";
		int totalBueno = 0;
		int totalRegular = 0;
		int totalMalo = 0;
		int total = 0;
		double prBno =0;
		double prMlo =0;
		double prRlo =0;
		
		File destino = new File("E:/WORKPACE/AndroidEjercicios/Libro4/assets/grafico.jpg");
		totalBueno = findresultgrafico( idLibro,  idPregunta, "BUENO");
		totalMalo = findresultgrafico( idLibro,  idPregunta, "MALO");
		totalRegular = findresultgrafico( idLibro,  idPregunta, "REGULAR");
		// Create a simple pie chart	
	    total = totalRegular+totalMalo+totalBueno;
	    prBno = (totalBueno * 100)/total;
	    prMlo = (totalMalo *100)/total;
	    prRlo = (totalRegular * 100)/total;
		DefaultPieDataset pieDataset = new DefaultPieDataset();
		pieDataset.setValue("Bueno = "+prBno+"%", new Integer(totalBueno));
		pieDataset.setValue("Regular   = "+prRlo+"%", new Integer(totalRegular));
		pieDataset.setValue("Malo = "+prMlo+"%", new Integer(totalMalo));
		JFreeChart chart = ChartFactory.createPieChart(
				"Resultados",
				pieDataset,
				true,
				true,
				false);
		try {
			if(destino.exists()){
				ChartUtilities.saveChartAsJPEG(destino, chart, 500,
						300);
				respuesta="Grafico  modificado";
			}else {
				destino.createNewFile();
				ChartUtilities.saveChartAsJPEG(destino, chart, 500,
						300);
				respuesta="Grafico creado";
			}
		
		} catch (Exception e) {
			respuesta="Error creando grafico.";
		}
//	    if(totalBueno == 0 ||totalMalo ==0 || totalRegular==0 ){
//			respuesta="No se han realizado evaluaciones para esta pregunta";
//		}
		return respuesta;
	}

	/**
	 * obtiene el resultado de las evaluaciones
	 * @param idLibro  String
	 * @param idPregunta String
	 * @param resultado String
	 * @return int
	 */
	public int findresultgrafico( int idLibro, int idPregunta, String resultado){
		//String json = "";
		int total = 0;
		//int[] resultados = new int[3];
		orm.DAOFactory lDAOFactory = orm.DAOFactory.getDAOFactory();
		orm.Resultado[] ormResultados;
		//	Collection<ResultadoVO> resultado = new ArrayList<ResultadoVO>();
		try {
			if(idLibro != 0 && idPregunta != 0 &&  resultado != null && resultado != ""){
				ormResultados = lDAOFactory.getResultadoDAO().listResultadoByQuery("librolib.lib_id = "+idLibro+" AND  preguntapre.pre_id ="+idPregunta+"AND res_resultado='"+resultado+"'", null);
				total = Math.min(ormResultados.length, ROW_COUNT);
			}
		} catch (PersistentException e) {
			// TODO Auto-generated catch block

		}
		return total;

	}

}

